/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.asistente.entidades;

import java.io.Serializable;
import java.util.Collection;
import java.util.Date;
import javax.persistence.*;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;

/**
 *
 * @author Wizard
 */
@Entity
@Table(name = "hd_usuarios")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "HdUsuarios.findAll", query = "SELECT h FROM HdUsuarios h"),
    @NamedQuery(name = "HdUsuarios.findByCodUsuario", query = "SELECT h FROM HdUsuarios h WHERE h.codUsuario = :codUsuario"),
    @NamedQuery(name = "HdUsuarios.findByNomUsuario", query = "SELECT h FROM HdUsuarios h WHERE h.nomUsuario = :nomUsuario"),
    @NamedQuery(name = "HdUsuarios.findByApeUsuarios", query = "SELECT h FROM HdUsuarios h WHERE h.apeUsuarios = :apeUsuarios"),
    @NamedQuery(name = "HdUsuarios.findByNickUsuario", query = "SELECT h FROM HdUsuarios h WHERE h.nickUsuario = :nickUsuario"),
    @NamedQuery(name = "HdUsuarios.findByPassUsuario", query = "SELECT h FROM HdUsuarios h WHERE h.passUsuario = :passUsuario"),
    @NamedQuery(name = "HdUsuarios.findByFecIngreso", query = "SELECT h FROM HdUsuarios h WHERE h.fecIngreso = :fecIngreso"),
    @NamedQuery(name = "HdUsuarios.findByMailUsuario", query = "SELECT h FROM HdUsuarios h WHERE h.mailUsuario = :mailUsuario"),
    @NamedQuery(name = "HdUsuarios.findByIndEstadoUsr", query = "SELECT h FROM HdUsuarios h WHERE h.indEstadoUsr = :indEstadoUsr")})
public class HdUsuarios implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @Basic(optional = false)
    @NotNull
    @Column(name = "COD_USUARIO")
    private Integer codUsuario;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 100)
    @Column(name = "NOM_USUARIO")
    private String nomUsuario;
    @Size(max = 100)
    @Column(name = "APE_USUARIOS")
    private String apeUsuarios;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 20)
    @Column(name = "NICK_USUARIO")
    private String nickUsuario;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 50)
    @Column(name = "PASS_USUARIO")
    private String passUsuario;
    @Column(name = "FEC_INGRESO")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fecIngreso;
    @Size(max = 100)
    @Column(name = "MAIL_USUARIO")
    private String mailUsuario;
    @Column(name = "IND_ESTADO_USR")
    private Character indEstadoUsr;
    @OneToMany(mappedBy = "codUsuario", fetch = FetchType.LAZY)
    private Collection<HdAccionesUsuario> hdAccionesUsuarioCollection;
    @OneToMany(mappedBy = "codSolicitante", fetch = FetchType.LAZY)
    private Collection<HdTickets> hdTicketsCollection;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "codUsuario", fetch = FetchType.LAZY)
    private Collection<HdTecnicos> hdTecnicosCollection;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "codUsuario", fetch = FetchType.LAZY)
    private Collection<HdAsesor> hdAsesorCollection;
    @JoinColumn(name = "COD_ROL", referencedColumnName = "COD_ROL")
    @ManyToOne(optional = false, fetch = FetchType.LAZY)
    private HdRoles codRol;
    @JoinColumn(name = "COD_AREA", referencedColumnName = "COD_AREA")
    @ManyToOne(optional = false, fetch = FetchType.LAZY)
    private HdAreas codArea;

    public HdUsuarios() {
    }

    public HdUsuarios(Integer codUsuario) {
        this.codUsuario = codUsuario;
    }

    public HdUsuarios(Integer codUsuario, String nomUsuario, String nickUsuario, String passUsuario) {
        this.codUsuario = codUsuario;
        this.nomUsuario = nomUsuario;
        this.nickUsuario = nickUsuario;
        this.passUsuario = passUsuario;
    }

    public Integer getCodUsuario() {
        return codUsuario;
    }

    public void setCodUsuario(Integer codUsuario) {
        this.codUsuario = codUsuario;
    }

    public String getNomUsuario() {
        return nomUsuario;
    }

    public void setNomUsuario(String nomUsuario) {
        this.nomUsuario = nomUsuario;
    }

    public String getApeUsuarios() {
        return apeUsuarios;
    }

    public void setApeUsuarios(String apeUsuarios) {
        this.apeUsuarios = apeUsuarios;
    }

    public String getNickUsuario() {
        return nickUsuario;
    }

    public void setNickUsuario(String nickUsuario) {
        this.nickUsuario = nickUsuario;
    }

    public String getPassUsuario() {
        return passUsuario;
    }

    public void setPassUsuario(String passUsuario) {
        this.passUsuario = passUsuario;
    }

    public Date getFecIngreso() {
        return fecIngreso;
    }

    public void setFecIngreso(Date fecIngreso) {
        this.fecIngreso = fecIngreso;
    }

    public String getMailUsuario() {
        return mailUsuario;
    }

    public void setMailUsuario(String mailUsuario) {
        this.mailUsuario = mailUsuario;
    }

    public Character getIndEstadoUsr() {
        return indEstadoUsr;
    }

    public void setIndEstadoUsr(Character indEstadoUsr) {
        this.indEstadoUsr = indEstadoUsr;
    }

    @XmlTransient
    public Collection<HdAccionesUsuario> getHdAccionesUsuarioCollection() {
        return hdAccionesUsuarioCollection;
    }

    public void setHdAccionesUsuarioCollection(Collection<HdAccionesUsuario> hdAccionesUsuarioCollection) {
        this.hdAccionesUsuarioCollection = hdAccionesUsuarioCollection;
    }

    @XmlTransient
    public Collection<HdTickets> getHdTicketsCollection() {
        return hdTicketsCollection;
    }

    public void setHdTicketsCollection(Collection<HdTickets> hdTicketsCollection) {
        this.hdTicketsCollection = hdTicketsCollection;
    }

    @XmlTransient
    public Collection<HdTecnicos> getHdTecnicosCollection() {
        return hdTecnicosCollection;
    }

    public void setHdTecnicosCollection(Collection<HdTecnicos> hdTecnicosCollection) {
        this.hdTecnicosCollection = hdTecnicosCollection;
    }

    @XmlTransient
    public Collection<HdAsesor> getHdAsesorCollection() {
        return hdAsesorCollection;
    }

    public void setHdAsesorCollection(Collection<HdAsesor> hdAsesorCollection) {
        this.hdAsesorCollection = hdAsesorCollection;
    }

    public HdRoles getCodRol() {
        return codRol;
    }

    public void setCodRol(HdRoles codRol) {
        this.codRol = codRol;
    }

    public HdAreas getCodArea() {
        return codArea;
    }

    public void setCodArea(HdAreas codArea) {
        this.codArea = codArea;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (codUsuario != null ? codUsuario.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof HdUsuarios)) {
            return false;
        }
        HdUsuarios other = (HdUsuarios) object;
        if ((this.codUsuario == null && other.codUsuario != null) || (this.codUsuario != null && !this.codUsuario.equals(other.codUsuario))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "org.asistente.DAO.HdUsuarios[ codUsuario=" + codUsuario + " ]";
    }
    
}
